using lucere.analysis.query;
using lucere.analysis.query.filter;

namespace lucere.service.search
{
	///<summary>
	///	 Implements search over a set of <code>Searchables</code>.
	///<p>Applications usually need only call the inherited <see cref="ISearcher.Search(IQuery,int)"></see>
	///or <see cref="ISearcher.Search(IQuery,IFilter,int)"></see> methods.
	///</p>
	///</summary>
	public interface IMultiSearcher:ISearcher
	{
		///<summary>
		/// Return the array of {@link Searchable}s this searches. 
		/// </summary>
		ISearchable[] Searchables { get; }

		///<summary>
		/// Returns index of the searcher for document <code>n</code> in the array  used to construct this searcher. 
		///</summary>
		int SubSearcher(int n);

		///<summary>
		/// Returns the document number of document <code>n</code> within its sub-index. 
		/// </summary>
		int SubDoc(int n);
	}
}